package com.zjsru.plan2024.week;

/**
 * 3083. 字符串及其反转中是否存在同一子字符串
 * 请你判断字符串 s 是否存在一个长度为 2 的子字符串，在其反转后的字符串中也出现。
 * @Author: cookLee
 * @Date: 2024-03-20
 */
public class IsSubstringPresent {

    /**
     * 主
     * \
     * 输入：s = "leetcode"
     * 输出：true
     * 解释：子字符串 "ee" 的长度为 2，它也出现在 reverse(s) == "edocteel" 中。
     * \
     * 输入：s = "abcba"
     * 输出：true
     * 解释：所有长度为 2 的子字符串 "ab"、"bc"、"cb"、"ba" 也都出现在 reverse(s) == "abcba" 中。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        IsSubstringPresent substringPresent = new IsSubstringPresent();
        String s = "leetcode";
        System.out.println(substringPresent.isSubstringPresent(s));
    }

    /**
     * 是否存在子字符串
     *
     * @param s s
     * @return boolean
     */
    public boolean isSubstringPresent(String s) {
        int len = s.length();
        for (int i = 0; i < len - 1; i++) {
            String sub = s.substring(i, i + 2);
            String reverse = this.helper(sub);
            if(s.contains(reverse)){
                return true;
            }
        }
        return false;
    }

    /**
     * 反转助手类
     *
     * @param sub sub
     * @return {@link String}
     */
    private String helper(String sub) {
        StringBuilder sb = new StringBuilder();
        for (int i = sub.length() - 1; i >= 0; i--) {
            sb.append(sub.charAt(i));
        }
        return sb.toString();
    }

}
